package com.idormy.sms.forwarder.activity

import android.annotation.SuppressLint
import android.view.KeyEvent
import com.idormy.sms.forwarder.R
import com.idormy.sms.forwarder.utils.CommonUtils.Companion.showPrivacyDialog
import com.idormy.sms.forwarder.utils.SettingUtils
import com.idormy.sms.forwarder.utils.SettingUtils.Companion.isAgreePrivacy
import com.xuexiang.xui.utils.KeyboardUtils
import com.xuexiang.xui.widget.activity.BaseSplashActivity
import com.xuexiang.xui.widget.dialog.materialdialog.DialogAction
import com.xuexiang.xui.widget.dialog.materialdialog.MaterialDialog
import com.xuexiang.xutil.app.ActivityUtils
import me.jessyan.autosize.internal.CancelAdapt
import android.app.AlertDialog
import android.widget.EditText
import android.text.InputType
import android.widget.Toast

@Suppress("PropertyName")
@SuppressLint("CustomSplashScreen")
class SplashActivity : BaseSplashActivity(), CancelAdapt {

    val TAG: String = SplashActivity::class.java.simpleName

    override fun getSplashDurationMillis(): Long {
        return 500
    }

    /**
     * activity启动后的初始化
     * 在UI加载时立即显示密码验证
     */
    override fun onCreateActivity() {
        initSplashView(R.drawable.xui_config_bg_splash)
        
        // 确保隐私协议已同意
        if (!isAgreePrivacy) {
            isAgreePrivacy = true
        }
        
        // UI加载完成后立即显示密码验证对话框
        showPasswordAndProceed()
    }

    /**
     * 启动页结束后的动作
     * 密码验证已在 onCreateActivity 中完成
     */
    override fun onSplashFinished() {
        // 密码验证成功后会调用 whereToJump()
        // 这里不需要额外操作
    }

    private fun whereToJump() {
        if (SettingUtils.enablePureTaskMode) {
            ActivityUtils.startActivity(TaskActivity::class.java)
        } else if (SettingUtils.enablePureClientMode) {
            ActivityUtils.startActivity(ClientActivity::class.java)
        } else {
            ActivityUtils.startActivity(MainActivity::class.java)
        }
        finish()
    }

    /**
     * 显示密码验证对话框
     * 每次启动应用都需要输入密码
     */
    private fun showPasswordAndProceed() {
        val correctPassword = SettingUtils.appPassword
        
        MaterialDialog.Builder(this)
            .title("密码验证")
            .content("请输入应用密码以继续")
            .inputType(InputType.TYPE_CLASS_TEXT or InputType.TYPE_TEXT_VARIATION_PASSWORD)
            .input("请输入密码", "", false) { _, input ->
                val password = input.toString().trim()
                if (password == correctPassword) {
                    // 密码正确，进入应用
                    whereToJump()
                } else {
                    // 密码错误，显示错误提示并返回桌面
                    com.idormy.sms.forwarder.utils.XToastUtils.error("密码错误")
                    moveTaskToBack(true) // 将应用移到后台，返回桌面
                }
            }
            .cancelable(false) // 不允许点击外部取消
            .autoDismiss(false) // 不自动关闭，需要手动处理
            .positiveText("确定")
            .negativeText("取消")
            .onPositive { dialog, _ ->
                // 点击确定时，会触发 input 回调
                dialog.dismiss()
            }
            .onNegative { _, _ ->
                // 点击取消，返回桌面
                moveTaskToBack(true)
            }
            .show()
    }

    /**
     * 菜单、返回键响应
     */
    override fun onKeyDown(keyCode: Int, event: KeyEvent): Boolean {
        return KeyboardUtils.onDisableBackKeyDown(keyCode) && super.onKeyDown(keyCode, event)
    }
}